#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
//测试popen和pclose函数
//popen的底层是管道,通过创建子进程执行参数cmd的内容,然后让父进程以文件的方式获得执行结果
int main()
{
    string cmd ;
    while(getline(cin,cmd)) //输入命令,因为有些命令带空格,所以不能直接使用cin,cin会跳过空白字符
    {
        FILE* pf =popen(cmd.c_str(),"r"); //第一个参数:你要执行的内容(命令) 第二个参数:以什么方式打开返回的这个文件
        if(NULL == pf)
        {
            perror("popen");
            exit(1);
        }
        //读取文件的内容
        string line;
        char buf[1024] = {0};
        while(fgets(buf,sizeof(buf),pf) != NULL)
        {
            line += buf;
        }
        cout << line << endl;
        pclose(pf);//注意:不要忘了关闭文件流
    }
    return 0;
}